/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import clases.TipoMovimiento;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Edder
 */
public class MdlTipoMovimiento implements Modelo<TipoMovimiento> {
    
    /**
     *
     * @param tipoMovimiento
     * @param cnx
     * @throws SQLException
     */
    @Override
    public void insert(TipoMovimiento tipoMovimiento, Conexion cnx) throws SQLException{
        String sql = "INSERT INTO tipomovimiento(tipo, nombre) "
                + "VALUES('" + tipoMovimiento.getTipo() + "',"
                + "'" + tipoMovimiento.getNombre() + "');";
        cnx.ejecutar(sql);
    }
    
    /**
     *
     * @param cnx
     * @return
     * @throws java.sql.SQLException
     */
    @Override
    public int getLastId(Conexion cnx) throws SQLException{
        String sql = "SELECT MAX(idTipoMovimiento) FROM tipoMovimiento";
        ResultSet rs = cnx.consultar(sql);
        if(rs.next()){
            return rs.getInt(1);
        }
        return -1;
    }
    
    /**
     *
     * @param tipoMovimiento
     * @param cnx
     * @throws SQLException
     */
    @Override
    public void update(TipoMovimiento tipoMovimiento, Conexion cnx) throws SQLException{
        String sql = "UPDATE tipomovimiento SET "
                + "tipo = '" + tipoMovimiento.getTipo() + "', "
                + "nombre = '" + tipoMovimiento.getNombre() + "' "
                + "WHERE idTipoMovimiento = " + tipoMovimiento.getIdTipoMovimiento();
        cnx.ejecutar(sql);        
    }
    
    public ArrayList<TipoMovimiento> getTipoMovimientos(String query, Conexion cnx) throws SQLException{        
        String sql = "SELECT * FROM tipomovimiento WHERE nombre LIKE '%" + query + "%'";
        return get(sql, cnx);        
    }
    
    /**
     *
     * @param sql
     * @param cnx
     * @return
     * @throws SQLException
     */
    @Override
    public ArrayList<TipoMovimiento> get(String sql, Conexion cnx) throws SQLException{
        ArrayList<TipoMovimiento> tipoMovimientos = new ArrayList<>();        
        ResultSet rs = cnx.consultar(sql);
        while(rs.next()){
            tipoMovimientos.add( new TipoMovimiento(rs.getInt(1), 
                    rs.getString(2).charAt(0), 
                    rs.getString(3)));
        }
        return tipoMovimientos;
    }

    /**
     *
     * @param id
     * @param cnx
     * @return
     * @throws SQLException
     */
    @Override
    public TipoMovimiento get(int id, Conexion cnx) throws SQLException {
        String sql = "SELECT * FROM tipomovimiento WHERE idTipoMovimiento = " + id;
        ResultSet rs = cnx.consultar(sql);
        if(rs.next()){
            return new TipoMovimiento(rs.getInt("idTipoMovimiento"),
                    rs.getString("tipo").charAt(0),
                    rs.getString("nombre"));
        }
        return null;
    }
}
